package cn.melon.view.control;

import java.awt.CardLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JPanel;

import cn.melon.mod.dorm.DormRequest;
import cn.melon.mod.library.LibraryRequest;
import cn.melon.mod.roll.RollRequest;
import cn.melon.mod.sc.ScRequest;
import cn.melon.window.MainWindow;

/**
 * 监听器，在点击底部按钮时转移到相应的页面
 * @ClassName: ChangeToSubWindow
 * @author Hzy
 */
public class ChangeToSubWindow implements ActionListener {
    private CardLayout card;// 布局
    String subWindow;// 要转移到的页面
    JPanel parent;// 父容器

    public ChangeToSubWindow(CardLayout card, JPanel parent, String subWindow) {
        this.card = card;
        this.parent = parent;
        this.subWindow = subWindow;
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        MainWindow m = (MainWindow) parent.getRootPane().getParent();
        String studentNumber = m.getStudent().getStudentNum();//学号
        if (subWindow.equals("homeWindow")) {
            // 通知服务器更新m.userXXInfo，调用m.displayXXWindow()
            if (m.isHomeWindowInitialized()) {
                // 已經初始化了该界面，只需更改界面数据（调用m.setXXInfo()）
            } else {
                // 该界面未曾初始化，初始化界面，设置该页状态为已初始化
                m.displayHomeWindow();
                m.setHomeWindowInitialized(true);
            }
        }

        if (subWindow.equals("rollWindow")) {
            // 通知服务器更新m.userXXInfo，调用m.displayXXWindow()
            RollRequest rollRequest = new RollRequest(m);
            if (m.isRollWindowInitialized()) {
                // 已經初始化了该界面，只需更改界面数据（调用m.setXXInfo()）
            } else {
                rollRequest.getRollInfo();
                // 该界面未曾初始化，初始化界面，设置该页状态为已初始化
                m.displayRollWindow();
                m.setRollWindowInitialized(true);
            }
        }

        if (subWindow.equals("libraryWindow")) {
            // 通知服务器更新m.userXXInfo，调用m.displayXXWindow()
            if (m.isLibraryWindowInitialized()) {
                // 已經初始化了该界面，只需更改界面数据（调用m.setXXInfo()）
            } else {
                LibraryRequest request = new LibraryRequest(m);
                // 该界面未曾初始化，初始化界面，设置该页状态为已初始化
                m.displayLibraryWindow();
                m.setLibraryWindowInitialized(true);
                m.removeAllBooks();
                request.getBorrowBooks();
            }
        }

        if (subWindow.equals("storeWindow")) {
            // 通知服务器更新m.userXXInfo，调用m.displayXXWindow()
            if (m.isStoreWindowInitialized()) {
                // 已經初始化了该界面，只需更改界面数据（调用m.setXXInfo()）
            } else {
                // 该界面未曾初始化，初始化界面，设置该页状态为已初始化
                m.displayStoreWindow();
                m.setStoreWindowInitialized(true);
            }
        }

        if (subWindow.equals("lessonWindow")) {
            // 通知服务器更新m.userXXInfo，调用m.displayXXWindow()
            if (m.isLessonWindowInitialized()) {
                // 已經初始化了该界面，只需更改界面数据（调用m.setXXInfo()）
            } else {
                ScRequest request = new ScRequest(m);
                // 该界面未曾初始化，初始化界面，设置该页状态为已初始化
                m.displayLessonWindow();
                m.setLessonWindowInitialized(true);
                m.removeAllLessonInTable();
                request.getAllInfoResult();
            }
        }

        if (subWindow.equals("dormitoryWindow")) {
            // 通知服务器更新m.userXXInfo，调用m.displayXXWindow()
            if (m.isDormitoryWindowInitialized()) {
                // 已經初始化了该界面，只需更改界面数据（调用m.setXXInfo()）
            } else {
                DormRequest request = new DormRequest(m);
                // 该界面未曾初始化，初始化界面，设置该页状态为已初始化
                m.displayDormitoryWindow();
                m.setDormitoryWindowInitialized(true);
                request.getDormInfo();
            }
        }
        // 切换卡片
        card.show(parent, subWindow);
    }
}
